cssprovider: More error handling into load_internal()
authorBenjamin Otte <otte@redhat.com>
Mon, 11 Apr 2011 17:57:42 +0000 (19:57 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 18 May 2011 19:58:46 +0000 (21:58 +0200)
Now the parsing functions starting at parse_stylesheet() don't have to
care about errors anymore.

gtk/gtkcssprovider.c

index 69edd1d52e7bca65a5a26cdadbdfaa764888fd9e..9616c7ae0503fbd84feaeaec49f60bca364d4ef8 100644 (file)
@@ -2591,21 +2591,10 @@ gtk_css_provider_propagate_error (GtkCssProvider  *provider,
   g_prefix_error (propagate_to, "%s:%u:%u: ", path ? path : "<unknown>", line, position);
 }
 
-static gboolean
+static void
 parse_stylesheet (GtkCssProvider  *css_provider,
-                  GScanner        *scanner,
-                  GError         **error)
+                  GScanner        *scanner)
 {
-  gulong error_handler;
-
-  if (error)
-    error_handler = g_signal_connect (css_provider,
-                                      "parsing-error",
-                                      G_CALLBACK (gtk_css_provider_propagate_error),
-                                      error);
-  else
-    error_handler = 0; /* silence gcc */
-
   g_scanner_get_next_token (scanner);
 
   while (!g_scanner_eof (scanner))
@@ -2627,20 +2616,6 @@ parse_stylesheet (GtkCssProvider  *css_provider,
       
       gtk_css_scanner_reset (scanner);
     }
-
-  if (error)
-    {
-      g_signal_handler_disconnect (css_provider, error_handler);
-      
-      if (*error)
-        {
-          /* We clear all contents from the provider for backwards compat reasons */
-          gtk_css_provider_reset (css_provider);
-          return FALSE;
-        }
-    }
-
-  return TRUE;
 }
 
 static gboolean
@@ -2651,15 +2626,35 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
                                 GError        **error)
 {
   GScanner *scanner;
-  gboolean result;
+  gulong error_handler;
+
+  if (error)
+    error_handler = g_signal_connect (css_provider,
+                                      "parsing-error",
+                                      G_CALLBACK (gtk_css_provider_propagate_error),
+                                      error);
+  else
+    error_handler = 0; /* silence gcc */
 
   scanner = gtk_css_scanner_new (file, data, length);
 
-  result = parse_stylesheet (css_provider, scanner, error);
+  parse_stylesheet (css_provider, scanner);
 
   gtk_css_scanner_destroy (scanner);
 
-  return result;
+  if (error)
+    {
+      g_signal_handler_disconnect (css_provider, error_handler);
+      
+      if (*error)
+        {
+          /* We clear all contents from the provider for backwards compat reasons */
+          gtk_css_provider_reset (css_provider);
+          return FALSE;
+        }
+    }
+
+  return TRUE;
 }
 
 /**